package com.wzdigit.wms.basic.client.response.transfer;

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.wzdigit.wms.basic.util.DateUtils;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 调拨单列表搜索输出-PC端
 * @author yangdongjie
 * @param <T>
 * @param <T>
 * @GetWarehouseListRequest.java
 * @2020年12月31日下午3:40:49
 */
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(value = {"hibernateLazyInitializer", "handler", "fieldHandler"}, ignoreUnknown = true)
public class TransferManageResponse implements Serializable {

	private static final long serialVersionUID = -1527112122655248398L;

	/**
	 * 调拨单表头ID
	 */
    @ApiModelProperty(value = "调拨单表头ID", required = false)
    private Integer transferHeaderId;
    
	/**
	 * 调拨单号
	 */
    @ApiModelProperty(value = "调拨单号", required = false)
    @Excel(name = "调拨单号", needMerge = true, width = 20)
    private String transferNo;
    
    /**
     * 状态
     * 对应的枚举：TransferHeaderStatusEnum
     */
    @ApiModelProperty(value = "状态", required = false)
    @Excel(name = "状态", needMerge = true, width = 20, replace = {
    		"取消_0", "新建_1", "已审核_2", "进行中_3", "完成_4", "关闭_5", "_null"})
    private Integer status;
    
    /**
     * 来源单号
     */
    @ApiModelProperty(value = "来源单号", required = false)
    @Excel(name = "来源单号", needMerge = true, width = 20)
    private String sourceNo;

	/**
	 * 调拨单类型
	 * 对应的枚举：TransferTypeEnum
	 */
    @ApiModelProperty(value = "调拨单类型", required = false)
    @Excel(name = "调拨单类型", needMerge = true, width = 20, replace = {
    		"转仓_T01", "仓库间调拨（二步调拨）_T02", "组织间调拨_T03", 
    		"销售订单调拨_T04", "借机_T05", "还机_T06", "_null"})
    private String transferType;
    
    /**
     * 调拨部门
     */
    @ApiModelProperty(value = "调拨部门", required = false)
    @Excel(name = "调拨部门", needMerge = true, width = 20)
    private String transferDept;
    
    /**
     * 调拨数量
     */
    @ApiModelProperty("调拨数量")
    @Excel(name = "调拨数量", needMerge = true, width = 20)
    private BigDecimal orderQty;
    
    /**
     * 完成数量
     */
    @ApiModelProperty("完成数量")
    @Excel(name = "完成数量", needMerge = true, width = 20)
    private BigDecimal cmpQty;
    
    /**
     * 在途数量
     */
    @ApiModelProperty("在途数量")
    @Excel(name = "在途数量", needMerge = true, width = 20)
    private BigDecimal transitQty;
    
    /**
     * 已拣数量
     */
    @ApiModelProperty("已拣数量")
    @Excel(name = "已拣数量", needMerge = true, width = 20)
    private BigDecimal pickQty;
    
    /**
     * 调拨原因
     */
    @ApiModelProperty(value = "调拨原因", required = false)
    @Excel(name = "调拨原因", needMerge = true, width = 20)
    private String reason;
    
    /**
     * 来源仓库ID
     */
    @ApiModelProperty(value = "来源仓库ID", required = false)
    @Excel(name = "来源仓库ID", needMerge = true, width = 20)
    private Integer fmWhsId;
    
    /**
     * 来源仓库编码
     */
    @ApiModelProperty(value = "来源仓库编码", required = false)
    @Excel(name = "来源仓库编码", needMerge = true, width = 20)
    private String fmWhsCode;
    
    /**
     * 来源仓库名称
     */
    @ApiModelProperty(value = "来源仓库名称", required = false)
    private String fmWhsName;
    
    /**
     * 目标仓库ID
     */
    @ApiModelProperty(value = "目标仓库ID", required = false)
    @Excel(name = "目标仓库ID", needMerge = true, width = 20)
    private Integer toWhsId;
    
    /**
     * 目标仓库编码
     */
    @ApiModelProperty(value = "目标仓库编码", required = false)
    @Excel(name = "目标仓库编码", needMerge = true, width = 20)
    private String toWhsCode;
    
    /**
     * 目标仓库名称
     */
    @ApiModelProperty(value = "目标仓库名称", required = false)
    private String toWhsName;
    
    /**
     * 采购组织
     */
    @ApiModelProperty(value = "采购组织", required = false)
    @Excel(name = "采购组织", needMerge = true, width = 20)
    private String purchsingOrg;
    
    /**
     * 公司代码
     */
    @ApiModelProperty(value = "公司代码", required = false)
    @Excel(name = "公司代码", needMerge = true, width = 20)
    private String companyCode;
    
    /**
     * ERP移动类型
     */
    @ApiModelProperty(value = "ERP移动类型", required = false)
    @Excel(name = "ERP移动类型", needMerge = true, width = 20)
    private String erpMoveType;
    
    /**
     * 调拨单打印
     * 对应的枚举：PrintFlagEnum
     */
    @ApiModelProperty(value = "调拨单打印", required = false)
    @Excel(name = "调拨单打印", needMerge = true, width = 20, replace = {
    		"未打印_0", "已打印_1", "未打印_null"})
    private Integer printFlag;
    
    /**
     * 备注
     */
    @ApiModelProperty(value = "备注", required = false)
    @Excel(name = "备注", needMerge = true, width = 20)
    private String comments;
    
    /**
     * 建单人
     */
    @ApiModelProperty(value = "建单人", required = false)
    @Excel(name = "建单人", needMerge = true, width = 20)
    private String transferCreateUser;
    
    /**
     * 建单时间
     */
    @ApiModelProperty(value = "建单时间", required = false)
    @Excel(name = "建单时间", needMerge = true, width = 20, format = DateUtils.FORMATTEXT04)
    private Date transferCreateTime;
    
    /**
     * 审单人
     */
    @ApiModelProperty(value = "审单人", required = false)
    @Excel(name = "审单人", needMerge = true, width = 20)
    private String transferApprovedUser;
    
    /**
     * 审单时间
     */
    @ApiModelProperty(value = "审单时间", required = false)
    @Excel(name = "审单时间", needMerge = true, width = 20, format = DateUtils.FORMATTEXT04)
    private Date transferApprovedTime;
    
    /**
     * 创建人
     */
    @ApiModelProperty(value = "创建人")
	@Excel(name = "创建人", needMerge = true, width = 20)
	private String createUser;

    /**
     * 创建时间
     */
	@ApiModelProperty(value = "创建时间")
	@Excel(name = "创建时间", needMerge = true, width = 20, format = DateUtils.FORMATTEXT04)
    private Date createTime;

    /**
     * 修改人
     */
	@ApiModelProperty(value = "修改人")
	@Excel(name = "修改人", needMerge = true, width = 20)
    private String modifyUser;

    /**
     * 修改时间
     */
	@ApiModelProperty(value = "修改时间")
	@Excel(name = "修改时间", needMerge = true, width = 20, format = DateUtils.FORMATTEXT04)
    private Date modifyTime;
}